/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.rcn.dal.hibernate;

import com.rcn.dal.interfaces.ISesionDAO;
import com.rcn.domain.Sesion;
import com.rcn.domain.Tratamiento;
import com.rcn.exception.RaccoonException;
import com.rcn.hibernate.GestorBD;
import com.rcn.hibernate.HibernateUtil;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.criterion.Restrictions;

/**
 *
 * @author Nicolas
 */
public class SesionDAO extends BaseDAO implements ISesionDAO{

    /**
     * Retorna una lista con todas las sesiones de un tratamiento.
     * @param tratamiento
     * @return
     * @throws RaccoonException 
     */
    @Override
    public List<Sesion> getSesiones(Tratamiento tratamiento) throws RaccoonException{
        List<Sesion> sesiones=null;
        try{
            String query="from Sesion where idTratamiento = "+tratamiento.getId();
            sesiones=GestorBD.getGestorBD().executeQuery(query);
        }catch(HibernateException e){
            throw new RaccoonException(e.getMessage(),e.getCause());
        }
        return sesiones;
    }

    /**
     * Retorna una lista con todas las sesiones del dia pasado por parametro.
     * @param fecha
     * @return
     * @throws RaccoonException 
     */
    @Override
    public List<Sesion> getSesiones(Date fecha) throws RaccoonException {
        List<Sesion> sesiones = null;
        try{
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(fecha);
            
            calendar.set(Calendar.HOUR_OF_DAY, 0);
            calendar.set(Calendar.MINUTE, 0);
            calendar.set(Calendar.SECOND, 0);
            Date fromDate = calendar.getTime();

            calendar.set(Calendar.HOUR_OF_DAY, 23);
            calendar.set(Calendar.MINUTE, 59);
            calendar.set(Calendar.SECOND, 59);
            Date toDate = calendar.getTime();

           Criteria crit = HibernateUtil.getSession().createCriteria(Sesion.class);
           crit.add(Restrictions.between("fechaPactadaEntrada", fromDate, toDate));
           
           sesiones = crit.list();
        }catch(HibernateException e){
            throw new RaccoonException (e.getMessage(), e.getCause());
        }
        return sesiones;
    }
}
